Laravel + SPA
課題
Laravel Mixをつかっていたが、ReactでかけたとしてもルーティングはLaravel側で行うのでSPAにはならない(従来どおりのページ遷移が発生する) 考え方
起点となるSPAのViewを初回だけ返す。
Next.jsなどを使って、SPAを書き出す。ルーティングはLaravelに頼る 実装
つまり、LaravelでSPAをつくるときには次のように責務を分ける
Laravel: APIサーバ
SPAのフレームワーク:ビュー
Laravelプロジェクトにfront向けディレクトリを切る例
Laravel側でルーティングをしているが、bladeテンプレートでなにを返しているのか不明
Laravel側のルーティングなし
ルーティングが/apiとそれ以外で混在する問題
/apiのエンドポイント以外ではindex.htmlをかえせばいい
方法
anyではなくFallbackでもよさそう
デプロイ
フロント
手法によってデプロイ先は違う
SPA/Static
サーバがあればなんでもよい
Netlify, GitHub Pages, 各種VPS...
SSR
JSをレンダリングするためにnode.jsが動くhost環境が必要
Heroku, GAE
フロントとバックエンドのデプロイ戦略
別アプリにするパターン
Heroku - Heroku
Heroku - Netlify
SSRしないならHeoku一本化できそう
同じアプリでホストするパターン
Laravelのpublicに、成果物を置く
NuxtとLaravelのつなぎこみ
LaravelのNuxt.jsを一緒のリポジトリで使う例
nuxtのbuildしたstatic HTMLをfile_get_contents()で返している